当前位置首页游戏解说《uiautomator2智能识文手游辅助外挂,高效打怪刷装备》

《uiautomator2智能识文手游辅助外挂,高效打怪刷装备》

游戏类型:科幻 剧情 战争 大陆 2015 

制作团队:苑琼丹 王子延 张伊楠 李迪恩 林可昕 郑健鹏 邱子建 

制作公司:王逸帆 吴承哲 

游戏介绍

uiautomator2智(🌑)能识(🧐)文手游辅助(📮)外挂,高效打怪刷装备(🥖) 一、背景

先交代下背景,就是疫情期间,随便玩了(⚾)一款游戏,玩了后发现,游戏任务太繁重了,为了兼顾学习和游戏,所(📥)以就萌生了自己动手开发手游辅助外挂的想法,调研了几个手机自动化测试平台最后选中了uiautomator2,然后有了这(🔆)边文章 《uiautomator2介绍及环境搭建》 以及文章《uiautomator2一分钟实现辅助外挂》
如果仔细读过第二篇文章的(😆)朋友就会发现,前面说的外挂就是 定时任务+ 模拟用户点击,如果碰上复杂点场景,就完全无法适应了,比如下面几种

Boss有刷新又时间间(💸)隔,然后区分“野外”,”秘境“,”神谕“,每(🎨)个刷新时(🍔)间都不同,那么这个辅助脚本怎么写呢,轮训点击肯(🧙)定不现实,无法快人一步抢先刷到怪,怎么解决呢? 当然是如标题写的 那样,通过阅(🎬)读这篇博文,大家会了解到这些知识


uiautomator2 截(🕐)图并裁剪python + tesseract 实现文字OCR识别tesseract 安装及注意事项以及带大家看辅助外挂是如何一步步开发完成的。二、需求分解

要实现按时去(🛁)刷怪,那么肯定需要上图红色框中(🥨)那个刷新时间,这个文字又无法通过简单的通过控件去识别,那(😋)么就只能通过图片去实现了,我这(🗃)里的思路是(🌯)用网上开源的OCR文字识别库识别出时间,到这里又不得不赞叹python扩展能力真是强大,关键是拓展起来超级easy,不(🆎)愧是“胶(⛵)水语言”。好了,长话短说,文件OCR识别,我这里用的是tesseract,下面会介绍 tesseract 的安装简单使(🌊)用。继续我们刚刚的分解,假设可以通过图片进行文字识别,那么要实现一个定时抢怪任务,我们需要的工作如下:
1、模拟点击到刷怪页面,并进行截图
2、截图到的图片做裁剪(主要是过滤其他文字识别干扰)
3、对裁剪到的图片做 灰度处理(比(🌲)如彩色变黑白),然后二值化、降噪等一系列(🚮)操作,主要是去除背景和一些其他的干扰。
4、识别到的(⛰)数字转化为秒,然后建立定时任务
5、定时启动抢怪任务,截图每个(🍥)步骤图片,拼接(🖲)成一张图,供人工查下结(🚭)果(🛵)。
6、截重复前面5个步骤实现自动刷挂打装备
好了,下面我们(🍨)一步步(🍃)来(⛸)实现这个(🐶)效果。

三、脚本开发实践1、tesseract 安装及测试

如果要使用Tesseract库,首先需要安装它到你的机器上。
macOS用户,我们使用Homebrew 去安装Tesseract:

$ brew install tesseract1

当然有时候Homebrew 可能更新导致(🐠)卡住,最简单的(😬)办法是在 .bash_profile 文件中新增(🌑)一行,暂时关闭更新

export HOMEBREW_NO_AUTO_UPDATE=true1

安装完成后 tesseract -v 查看是否安装完成

可以通(📣)过命令测试一把
比如下面一张(🎛)图片

我们通过命令 tesseract /Users/bifeng/222222.png stdout digits

可(👍)以看出一下子就把(😪)数字识别出来了,这里识别得是数(😠)字,如果是中文(✔)则需要改为
tesseract /Users/bifeng/3333.jpg stdout -l chi_sim
-l 后面得参数代表识别(💢)得语言 chi_sim 代表是中文简(🛋)体。
当然中(💦)文简体字体是需要额(❄)外去下载字库得,
去往https://github.com/tesseract-ocr/tessdata下载中文数据(😸)集chi_sim.traineddata,把它放到这(💓)目录下:
/usr/local/Cellar/tesseract/对(🤼)应版本/tessdata/目录下即可
更多Tesseract的介绍可以访问GitHub 这里就不做过多发散了

2、python使用Tesseract库识别文字

其实在很多场景中,都会有(🗞)验证码环境,一般我们都是用 python + Tesseract来识别验证码,这里我们用来识别手游上倒计时也是“适得其用” 来,使用方式如下,首先安装扩展库
a、pip install pytesseract 用于python操作pytesseract
b、对要识别的图片做降噪,简单的说就是对图片做简单处理,如裁剪指定区域,过滤其他文字的干扰,做灰度化、二值化等一些操作,提供文字识别的准确性,具体代码可以(⛸)参见如下
#!/usr/bin/python

############################## #encoding=utf-8# bifeng 2020.03.23# python tesseract 文字识别工具类###############################import pytesseractfrom PIL import Imageclass TesseractUtils(object):    @staticmethod    def imgae_to_str(image):        # 处理成黑白图        image_gray = image.convert("L")        # image_gray.show()        # 进一步增强,使用(🌶)二值化(😶)处理        image_two = image_gray.point(lambda x: 255 if x > 129 else 0)        #image_two.show()        # content = pytesseract.image_to_string(image)  # 解析图片        content = pytesseract.image_to_string(image_two, lang='chi_sim')        print(content)        return content    @staticmethod    def crop_image_to_str(image, left, top, right, bottom):        '''识别(🎃)图片部分区域位置'''        box = (left, top, right, bottom)        crop_img = image.crop(box)        # crop_img.show()        image_gray = crop_img.convert("L")        # image_gray.show()        # 进一步增强,使(🕵)用二值(🧚)化处理        image_two = image_gray.point(lambda x: 255 if x > 129 else 0)        #image_two.show()        content = pytesseract.image_to_string(image_two)        #识别中文        # content = pytesseract.image_to_string(crop_img, lang='chi_sim')        print(content)        return content12345678910111213141516171819202122232425262728293031323334353637

使用方法,通过通过(🏆)调用api,可以识别指定(🤪)区域图片如(🔙):

TesseractUtils.crop_image_to_str(crop_img, 767, 289, 915, 334)1

这里 767, 289, 915, 334 分(👒)别代表图片区域 left, top, right, bottom 坐标如下面一张图片

767, 289, 915, 334 刚好代表(💥)红色框框区域(🐵),运行后我们可以得到
00:12:30 这样一个时(🍎)间 ,

3、构建定时任务,定时刷怪

转换我们把它转(🔧)化为秒

    def timeStr2s(t):        '''xx:xx:xx转换为秒'''        if t is None:            return 10000        time = 10000        try:            h, m, s = t.strip().split(":")            time = int(h) * 3600 + int(m) * 60 + int(s)        except:            print("格式不对 : " + t)        return time1234567891011

然后在建立(🚶)定时任务

    fristJob = TesseractUtils.crop_image_to_str(ywImg, 767, 289, 915, 334)	currSec = time.time()+ StringUtils.timeStr2s(fristJob)    tiemstr = time.strftime("%H:%M:%S", time.localtime(currSec))    LogEx.d("excuteJobList in " + tiemstr)    schedule.every().day.at(tiemstr).do(excuteJobList)12345

这样一(🤘)个定时刷挂任务就完成了,剩下的基本就是(🎖)封装刷挂,执行刷改,这里我是这么(🆒)封装的

#!/usr/bin/python# #encoding=utf-8# bifeng 2020.03.23# 单步执行路径###########################class CaseInfo(object):    def __init__(self):        # 用例名称        self.name = ''        # 模拟执行列表        self.clicklist = []        # 单步执(💪)行休眠时间        self.sleepTime = 2        # 图片裁取区(🔦)域        self.cropBox = []        # 执行列表单步重复项        self.innerRepeatIndex = 2        # 默认循环次数        self.innerRepeatCount = 20        # 用例(🥌)延迟多少秒后(🌪)执行        self.excuteDelayTime = 30123456789101112131415161718192021

name 代表名字
clicklist 代表执行路径,比如一次(🔼)野外任务,他有很多点,那么(🔛)他的路径(➰)就是如下:

    case_table = {        'yewai0': [            # Boss坐标            (1028, 1321),            # 野(〽)外            (329, 1665),            # 第1个boss 885,406            (885, 406),            # 返回                (1009, 1831),        ]}1234567891011

self.innerRepeatCount = 20 代表,boss 挑战按钮 (885, 406), 这个我会循环执行很多变,保证我第一个按下,从而完成刷改功能,封装好后,刷挂的代码就很简(🐦)单了

def excuteJobList():    LogEx.v("----------excuteJobList start---------------------")    # global runner    runner = LegendRunner(adbConnectIp)    caseItem = caseList.pop()    LogEx.v("case list size = " + str(len(caseList)))    clickList = caseItem.getClickList()    LogEx.v("excute job " + caseItem.toString())    for index in range(0, len(clickList)):        LogEx.d("click : " + str(clickList[index][0]) + " " + str(clickList[index][1]))        runner.click(clickList[index][0], clickList[index][1])        if index == caseItem.getInnerRepeatIndex():            caseItem.setRepeatCount(90)            for i in range(0, caseItem.getRepeatCount()):                LogEx.d("click : " + str(i) + " " + str(clickList[index][0]) + " " + str(clickList[index][1]))                runner.click(clickList[index][0], clickList[index][1], 0)                time.sleep(0.4)        elif index == len(clickList) - 1:            timestamp = time.strftime("%H:%M:%S", time.localtime(time.time()))            LogEx.d("--sleep 80 s---------: " + timestamp)            runner.d.screenshot(os.getcwd() + "/image/" + timestamp + ".png")            time.sleep(80)    currSec = time.time() + 3    tiemstr = time.strftime("%H:%M:%S", time.localtime(currSec))    schedule.every().day.at(tiemstr).do(scheduleNextJob)    LogEx.v("----------excuteJobList end---------------------")123456789101112131415161718192021222324252627

我只需要 for index in range(0, len(clickList)): 循环执行这个clicklist 就行了,然后在每(🕊)个步骤下截图一张(🆎),任务完成后把所有的图片拼接成一张图(如何拼接见文章《Python工具类之PIL.Image库快速实现多图拼接》)
执行完一个刷改任务,最后我们有建立下一个刷改任(🍹)务

def scheduleNextJob():    LogEx.v("----------scheduleNextJob start---------------------")    global runner    # runner = LegendRunner(adbConnectIp)    # 获取最近的boss定时任务    caseItem = runner.getRecentlyBossTask()    # 加入到任(⬛)务列表    caseList.append(caseItem)    # 延时    currSec = time.time() + caseItem.getExcuteDelayTime() - 50    if currSec < time.time():        currSec = time.time() + 1    tiemstr = time.strftime("%H:%M:%S", time.localtime(currSec))    LogEx.d("excuteJobList in " + tiemstr)    schedule.every().day.at(tiemstr).do(excuteJobList)    LogEx.v("----------scheduleNextJob end---------------------")12345678910111213141516

扫码到最近boss任务-》定时执行-》 执行完继续扫码下一个最近boss任务,这样一直循(☔)环下去,就完成了(🔺)一个简单的(🏀)自动定时刷怪任务。

4、最(🌹)终效果

看下最终效果

刷怪过程中我们做了(🕤)每个步骤的截图,我(🥝)们看下一次刷怪的效果截图


这(🤗)样我们的脚本就开发完(🛑)成了,剩下的只需要开启脚本,喝上一杯茶,等上一段时候回来收获刷怪掉落的神装就可以了,是不是很爽.

【超级变态的传奇手游版的相关新闻】

猜你喜欢

  • 更新至06集

    喧哗独学

  • 更新至20240502期小屋特辑

    音你而来

  • 更新至第20240503期

    半熟恋人第三季

  • 更新至18集

    天行健

  • HD

    前途海量

  • 更新至08集

    老家伙

  • 更新至17集

    另一种蓝

  • 更新至05集

    庆余年第二季

  • 更新至02集

    9号秘事第九季

  • 更新至04集

    布里奇顿第三季

💟相关问题

1.请问哪个网站可以免费在线观看动漫《uiautomator2智能识文手游辅助外挂,高效打怪刷装备》?

优酷视频网友:http://www.youxise.com/%7Bxwd_%E5%BD%93%E5%89%8D%E8%B7%AF%E5%BE%84%7D/26520962.html

2.《uiautomator2智能识文手游辅助外挂,高效打怪刷装备》是什么时候上映/什么时候开播的?

腾讯视频网友:上映时间为2022年,详细日期可以去百度百科查一查。

3.《uiautomator2智能识文手游辅助外挂,高效打怪刷装备》是哪些演员主演的?

爱奇艺网友:uiautomator2智能识文手游辅助外挂,高效打怪刷装备演员表有,导演是。

4.动漫《uiautomator2智能识文手游辅助外挂,高效打怪刷装备》一共多少集?

电影吧网友:目前已更新到全集已完结

5.手机免费在线点播《uiautomator2智能识文手游辅助外挂,高效打怪刷装备》有哪些网站?

手机电影网网友:美剧网、腾讯视频、电影网

6.《uiautomator2智能识文手游辅助外挂,高效打怪刷装备》评价怎么样?

百度最佳答案:《uiautomator2智能识文手游辅助外挂,高效打怪刷装备》口碑不错,演员阵容强大演技炸裂,并且演员的演技一直在线,全程无尿点。你也可以登录百度问答获得更多评价。

  • uiautomator2智能识文手游辅助外挂,高效打怪刷装备百度百科 uiautomator2智能识文手游辅助外挂,高效打怪刷装备版原著 uiautomator2智能识文手游辅助外挂,高效打怪刷装备什么时候播 uiautomator2智能识文手游辅助外挂,高效打怪刷装备在线免费观看 uiautomator2智能识文手游辅助外挂,高效打怪刷装备演员表 uiautomator2智能识文手游辅助外挂,高效打怪刷装备大结局 uiautomator2智能识文手游辅助外挂,高效打怪刷装备说的是什么 uiautomator2智能识文手游辅助外挂,高效打怪刷装备图片 在线uiautomator2智能识文手游辅助外挂,高效打怪刷装备好看吗 uiautomator2智能识文手游辅助外挂,高效打怪刷装备剧情介绍      uiautomator2智能识文手游辅助外挂,高效打怪刷装备角色介绍 uiautomator2智能识文手游辅助外挂,高效打怪刷装备上映时间 
  • Copyright © 2008-2018

    统计代码